package org.duiduo.controller;//package org.duiduo.controller;
//
//import com.alipay.easysdk.factory.Factory;
//import com.alipay.easysdk.payment.page.models.AlipayTradePagePayResponse;
//import lombok.extern.slf4j.Slf4j;
//import org.duiduo.dto.AliPay;
//import org.duiduo.enums.OrderStateEnum;
//import org.duiduo.service.OrderService;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletRequest;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * 阿里支付控制层
// *
// * @author liangze
// */
//@Slf4j
//@RestController
//@RequestMapping("/alipay")
//public class AliPayController {
//
//    @Resource
//    private OrderService orderService;
//
//    // TODO 使用的别人的支付宝支付 请勿支付
//    @GetMapping("/pay")
//    public String pay(AliPay aliPay) {
//        AlipayTradePagePayResponse response;
//        try {
//            //  发起API调用（以创建当面付收款二维码为例）
//            response = Factory.Payment.Page()
//                    .pay(aliPay.getSubject(), aliPay.getTraceNo(), aliPay.getTotalAmount(), "");
//        } catch (Exception e) {
//            log.error("调用遭遇异常，原因：", e);
//            throw new RuntimeException(e.getMessage(), e);
//        }
//        return response.getBody();
//    }
//
//    // TODO 本地是 回调不了的
//    @PostMapping("/notify")  // 注意这里必须是POST接口
//    public String payNotify(HttpServletRequest request) throws Exception {
//        if ("TRADE_SUCCESS".equals(request.getParameter("trade_status"))) {
//            log.info("=========支付宝异步回调========");
//
//            Map<String, String> params = new HashMap<>();
//            Map<String, String[]> requestParams = request.getParameterMap();
//            for (String name : requestParams.keySet()) {
//                params.put(name, request.getParameter(name));
//            }
//
//            String tradeNo = params.get("out_trade_no");
//            String gmtPayment = params.get("gmt_payment");
//
//            // 支付宝验签
//            if (Factory.Payment.Common().verifyNotify(params)) {
//                // 验签通过
//                log.info("交易名称:{}", params.get("subject"));
//                log.info("交易状态:{}", params.get("trade_status"));
//                log.info("支付宝交易凭证号:{}", params.get("trade_no"));
//                log.info("商户订单号:{}", params.get("out_trade_no"));
//                log.info("交易金额:{}", params.get("total_amount"));
//                log.info("买家在支付宝唯一id:{}", params.get("buyer_id"));
//                log.info("买家付款时间:{}", params.get("gmt_payment"));
//                log.info("买家付款金额:{}", params.get("buyer_pay_amount"));
//
//                // 更新订单未已支付
//                orderService.updateState(tradeNo, OrderStateEnum.PAID.getState(), gmtPayment);
//            }
//        }
//        return "success";
//    }
//
//}
